<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <li>01</li>
    <li>02</li>
    <li>03</li>
    <li>04</li>
    <li>05</li>
    <li>06</li>
    <li>07</li>
    <li>08</li>
    <li>09</li>
    <li>10</li>
</body>
<script>
    function fn(){
        console.log(arguments);  // 将函数调用过程中 所有的实际参数 整合到数组中
        var [a,b,c,d] = arguments;
        console.log(a,b,c,d);
    }

    // fn(2,8,4,6);

</script>
<script>
    // 扩展运算符（spread）是三个点（...）。它好比 rest 参数的逆运算，
    // 用在数组中  将一个数组转为用逗号分隔的参数序列。

    // 扩展运算符 => 在数组中使用, 将一个数组转为用逗号分隔的参数序列。
    var list = [2,8,4,6,5,7,9,3,1];
    // console.log(...list);    // ...list =>  2,8,4,6,5,7,9,3,1

    // 常见应用:
    // (1)   将数组展开 作为函数的实际参数
    console.log(...list);   // // ...list =>  2,8,4,6,5,7,9,3,1
    var min = Math.min(...list);   //  Math.min( 2,8,4,6,5,7,9,3,1)
    console.log(min);

    // (2)  数组的深复制 ,  伪数组转真数组

    // 数组的深复制
    var list = [2,8,4,6,5,7,9,3,1];
    var arr = [...list]; //  ...list =>  2,8,4,6,5,7,9,3,1  => 放到 [] => [ 2,8,4,6,5,7,9,3,1]
    console.log(arr === list);

    // 伪数组转真数组
    var liList = document.getElementsByTagName("li");
    var arr = [...liList];
    console.log(liList);
    console.log(arr,Array.isArray(arr));

    // (3)  数组合并
    var arr = [1,2,3];
    var brr = [4,5,6];
    var crr = [7,8,9];

    // var list = arr.concat(brr,crr);
    var list = [...arr,...brr,...crr];
    console.log(list);





</script>
</html>